{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import random\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.calibration import calibration_curve\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import StandardScaler, LabelEncoder\n",
    "\n",
    "import tensorflow as tf\n",
    "from tensorflow.keras.layers import *\n",
    "from tensorflow.keras.models import *\n",
    "from tensorflow.keras.callbacks import *\n",
    "from tensorflow.keras.optimizers import *\n",
    "from tensorflow.keras import backend as K"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(72983, 34)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>RefId</th>\n",
       "      <th>IsBadBuy</th>\n",
       "      <th>PurchDate</th>\n",
       "      <th>Auction</th>\n",
       "      <th>VehYear</th>\n",
       "      <th>VehicleAge</th>\n",
       "      <th>Make</th>\n",
       "      <th>Model</th>\n",
       "      <th>Trim</th>\n",
       "      <th>SubModel</th>\n",
       "      <th>...</th>\n",
       "      <th>MMRCurrentRetailAveragePrice</th>\n",
       "      <th>MMRCurrentRetailCleanPrice</th>\n",
       "      <th>PRIMEUNIT</th>\n",
       "      <th>AUCGUART</th>\n",
       "      <th>BYRNO</th>\n",
       "      <th>VNZIP1</th>\n",
       "      <th>VNST</th>\n",
       "      <th>VehBCost</th>\n",
       "      <th>IsOnlineSale</th>\n",
       "      <th>WarrantyCost</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>12/7/2009</td>\n",
       "      <td>ADESA</td>\n",
       "      <td>2006</td>\n",
       "      <td>3</td>\n",
       "      <td>MAZDA</td>\n",
       "      <td>MAZDA3</td>\n",
       "      <td>i</td>\n",
       "      <td>4D SEDAN I</td>\n",
       "      <td>...</td>\n",
       "      <td>11597.0</td>\n",
       "      <td>12409.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>21973</td>\n",
       "      <td>33619</td>\n",
       "      <td>FL</td>\n",
       "      <td>7100.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1113</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>12/7/2009</td>\n",
       "      <td>ADESA</td>\n",
       "      <td>2004</td>\n",
       "      <td>5</td>\n",
       "      <td>DODGE</td>\n",
       "      <td>1500 RAM PICKUP 2WD</td>\n",
       "      <td>ST</td>\n",
       "      <td>QUAD CAB 4.7L SLT</td>\n",
       "      <td>...</td>\n",
       "      <td>11374.0</td>\n",
       "      <td>12791.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>19638</td>\n",
       "      <td>33619</td>\n",
       "      <td>FL</td>\n",
       "      <td>7600.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1053</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>12/7/2009</td>\n",
       "      <td>ADESA</td>\n",
       "      <td>2005</td>\n",
       "      <td>4</td>\n",
       "      <td>DODGE</td>\n",
       "      <td>STRATUS V6</td>\n",
       "      <td>SXT</td>\n",
       "      <td>4D SEDAN SXT FFV</td>\n",
       "      <td>...</td>\n",
       "      <td>7146.0</td>\n",
       "      <td>8702.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>19638</td>\n",
       "      <td>33619</td>\n",
       "      <td>FL</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1389</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>12/7/2009</td>\n",
       "      <td>ADESA</td>\n",
       "      <td>2004</td>\n",
       "      <td>5</td>\n",
       "      <td>DODGE</td>\n",
       "      <td>NEON</td>\n",
       "      <td>SXT</td>\n",
       "      <td>4D SEDAN</td>\n",
       "      <td>...</td>\n",
       "      <td>4375.0</td>\n",
       "      <td>5518.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>19638</td>\n",
       "      <td>33619</td>\n",
       "      <td>FL</td>\n",
       "      <td>4100.0</td>\n",
       "      <td>0</td>\n",
       "      <td>630</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>12/7/2009</td>\n",
       "      <td>ADESA</td>\n",
       "      <td>2005</td>\n",
       "      <td>4</td>\n",
       "      <td>FORD</td>\n",
       "      <td>FOCUS</td>\n",
       "      <td>ZX3</td>\n",
       "      <td>2D COUPE ZX3</td>\n",
       "      <td>...</td>\n",
       "      <td>6739.0</td>\n",
       "      <td>7911.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>19638</td>\n",
       "      <td>33619</td>\n",
       "      <td>FL</td>\n",
       "      <td>4000.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1020</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 34 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   RefId  IsBadBuy  PurchDate Auction  VehYear  VehicleAge   Make  \\\n",
       "0      1         0  12/7/2009   ADESA     2006           3  MAZDA   \n",
       "1      2         0  12/7/2009   ADESA     2004           5  DODGE   \n",
       "2      3         0  12/7/2009   ADESA     2005           4  DODGE   \n",
       "3      4         0  12/7/2009   ADESA     2004           5  DODGE   \n",
       "4      5         0  12/7/2009   ADESA     2005           4   FORD   \n",
       "\n",
       "                 Model Trim           SubModel  ...  \\\n",
       "0               MAZDA3    i         4D SEDAN I  ...   \n",
       "1  1500 RAM PICKUP 2WD   ST  QUAD CAB 4.7L SLT  ...   \n",
       "2           STRATUS V6  SXT   4D SEDAN SXT FFV  ...   \n",
       "3                 NEON  SXT           4D SEDAN  ...   \n",
       "4                FOCUS  ZX3       2D COUPE ZX3  ...   \n",
       "\n",
       "  MMRCurrentRetailAveragePrice MMRCurrentRetailCleanPrice  PRIMEUNIT AUCGUART  \\\n",
       "0                      11597.0                    12409.0        NaN      NaN   \n",
       "1                      11374.0                    12791.0        NaN      NaN   \n",
       "2                       7146.0                     8702.0        NaN      NaN   \n",
       "3                       4375.0                     5518.0        NaN      NaN   \n",
       "4                       6739.0                     7911.0        NaN      NaN   \n",
       "\n",
       "   BYRNO VNZIP1 VNST VehBCost  IsOnlineSale  WarrantyCost  \n",
       "0  21973  33619   FL   7100.0             0          1113  \n",
       "1  19638  33619   FL   7600.0             0          1053  \n",
       "2  19638  33619   FL   4900.0             0          1389  \n",
       "3  19638  33619   FL   4100.0             0           630  \n",
       "4  19638  33619   FL   4000.0             0          1020  \n",
       "\n",
       "[5 rows x 34 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### READ DATA ###\n",
    "\n",
    "df = pd.read_csv('car_lemon.csv.zip')\n",
    "\n",
    "print(df.shape)\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x24664d50bc8>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "### LABEL DISTRIBUTION ###\n",
    "\n",
    "df.IsBadBuy.value_counts().plot.pie()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "### ENCODE LABELS ###\n",
    "\n",
    "label = pd.get_dummies(df.IsBadBuy).values\n",
    "\n",
    "df.drop(['RefId','IsBadBuy','PurchDate'], inplace=True, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "### ADJUST DATA AND SEPARATE NUMERICAL FROM CATEGORICAL VARIABLES ###\n",
    "\n",
    "cat_ = {}\n",
    "num_ = {}\n",
    "nans = df.isna().sum() / len(df)\n",
    "\n",
    "for col in df.columns:\n",
    "    \n",
    "    if nans[col] > 0:\n",
    "        \n",
    "        if (df.dtypes[col] == float) or (df.dtypes[col] == int):\n",
    "            \n",
    "            df[col].fillna(df[col].median(), inplace=True)\n",
    "            num_[col] = df[col].std()\n",
    "            \n",
    "        else:\n",
    "            \n",
    "            df[col].fillna('unknown', inplace=True)\n",
    "            \n",
    "            encoder = LabelEncoder()\n",
    "            df[col] = encoder.fit_transform(df[col])\n",
    "            cat_[col] = df[col].max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "### PLOT DESCRIPTIVE STATISTICS OF DATASET ###\n",
    "\n",
    "plt.figure(figsize=(16, 5))\n",
    "\n",
    "plt.subplot(121)\n",
    "plt.bar(range(len(cat_)), cat_.values())\n",
    "plt.xticks(range(len(cat_)), cat_.keys(), rotation=90)\n",
    "plt.ylabel('count'); plt.title('categorical variables')\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.bar(range(len(num_)), num_.values())\n",
    "plt.xticks(range(len(num_)), num_.keys(), rotation=90)\n",
    "plt.ylabel('std'); plt.title('numerical variables')\n",
    "\n",
    "np.set_printoptions(False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(43789, 31) (14597, 31) (14597, 31)\n",
      "(43789, 2) (14597, 2) (14597, 2)\n"
     ]
    }
   ],
   "source": [
    "### TRAIN, VALIDATION, TEST SPLIT ###\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(df, label, test_size=0.4, random_state=33)\n",
    "X_valid, X_test, y_valid, y_test = train_test_split(X_test, y_test, test_size=0.5, random_state=33)\n",
    "\n",
    "print(X_train.shape, X_valid.shape, X_test.shape)\n",
    "print(y_train.shape, y_valid.shape, y_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def set_seed(seed):\n",
    "    \n",
    "    tf.random.set_seed(seed)\n",
    "    os.environ['PYTHONHASHSEED'] = str(seed)\n",
    "    np.random.seed(seed)\n",
    "    random.seed(seed)\n",
    "\n",
    "\n",
    "def get_model(cat_feat, emb_dim=8):\n",
    "    \n",
    "    set_seed(33)\n",
    "    \n",
    "    def get_embed(inp, size, emb_dim, name):\n",
    "\n",
    "        emb = Embedding(size, emb_dim)(inp)\n",
    "        emb = Flatten(name=name)(emb)\n",
    "\n",
    "        return emb\n",
    "    \n",
    "    inp_dense = Input(shape=len(num_))\n",
    "    \n",
    "    embs, inps = [], [inp_dense]\n",
    "    \n",
    "    x = Dense(128, activation='relu')(inp_dense)\n",
    "    \n",
    "    for f in cat_feat:\n",
    "        inp = Input((1,), name=f+'_inp')\n",
    "        embs.append(get_embed(inp, cat_[f]+1, emb_dim, f))\n",
    "        inps.append(inp)\n",
    "        \n",
    "    x = Concatenate()([x]+embs)\n",
    "    x = BatchNormalization()(x)\n",
    "    x = Dropout(0.3)(x)\n",
    "    x = Dense(64, activation='relu')(x)\n",
    "    x = Dropout(0.3)(x)\n",
    "    x = Dense(32, activation='relu')(x)\n",
    "    \n",
    "    logits = Dense(2, name='logits')(x)\n",
    "    out = Activation('softmax')(logits)\n",
    "    \n",
    "    model = Model(inps, out)\n",
    "    model.compile(optimizer='adam', loss ='categorical_crossentropy', \n",
    "                  metrics=[tf.keras.metrics.AUC()])\n",
    "    \n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"model\"\n",
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "Trim_inp (InputLayer)           [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "SubModel_inp (InputLayer)       [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "Color_inp (InputLayer)          [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "Transmission_inp (InputLayer)   [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "WheelType_inp (InputLayer)      [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "Nationality_inp (InputLayer)    [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "Size_inp (InputLayer)           [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "TopThreeAmericanName_inp (Input [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "PRIMEUNIT_inp (InputLayer)      [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "AUCGUART_inp (InputLayer)       [(None, 1)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "input_1 (InputLayer)            [(None, 9)]          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "embedding (Embedding)           (None, 1, 8)         1080        Trim_inp[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "embedding_1 (Embedding)         (None, 1, 8)         6912        SubModel_inp[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "embedding_2 (Embedding)         (None, 1, 8)         136         Color_inp[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "embedding_3 (Embedding)         (None, 1, 8)         32          Transmission_inp[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "embedding_4 (Embedding)         (None, 1, 8)         32          WheelType_inp[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "embedding_5 (Embedding)         (None, 1, 8)         40          Nationality_inp[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "embedding_6 (Embedding)         (None, 1, 8)         104         Size_inp[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "embedding_7 (Embedding)         (None, 1, 8)         40          TopThreeAmericanName_inp[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "embedding_8 (Embedding)         (None, 1, 8)         24          PRIMEUNIT_inp[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "embedding_9 (Embedding)         (None, 1, 8)         24          AUCGUART_inp[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "dense (Dense)                   (None, 128)          1280        input_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "Trim (Flatten)                  (None, 8)            0           embedding[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "SubModel (Flatten)              (None, 8)            0           embedding_1[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "Color (Flatten)                 (None, 8)            0           embedding_2[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "Transmission (Flatten)          (None, 8)            0           embedding_3[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "WheelType (Flatten)             (None, 8)            0           embedding_4[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "Nationality (Flatten)           (None, 8)            0           embedding_5[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "Size (Flatten)                  (None, 8)            0           embedding_6[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "TopThreeAmericanName (Flatten)  (None, 8)            0           embedding_7[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "PRIMEUNIT (Flatten)             (None, 8)            0           embedding_8[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "AUCGUART (Flatten)              (None, 8)            0           embedding_9[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "concatenate (Concatenate)       (None, 208)          0           dense[0][0]                      \n",
      "                                                                 Trim[0][0]                       \n",
      "                                                                 SubModel[0][0]                   \n",
      "                                                                 Color[0][0]                      \n",
      "                                                                 Transmission[0][0]               \n",
      "                                                                 WheelType[0][0]                  \n",
      "                                                                 Nationality[0][0]                \n",
      "                                                                 Size[0][0]                       \n",
      "                                                                 TopThreeAmericanName[0][0]       \n",
      "                                                                 PRIMEUNIT[0][0]                  \n",
      "                                                                 AUCGUART[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization (BatchNorma (None, 208)          832         concatenate[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "dropout (Dropout)               (None, 208)          0           batch_normalization[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "dense_1 (Dense)                 (None, 64)           13376       dropout[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "dropout_1 (Dropout)             (None, 64)           0           dense_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "dense_2 (Dense)                 (None, 32)           2080        dropout_1[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "logits (Dense)                  (None, 2)            66          dense_2[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "activation (Activation)         (None, 2)            0           logits[0][0]                     \n",
      "==================================================================================================\n",
      "Total params: 26,058\n",
      "Trainable params: 25,642\n",
      "Non-trainable params: 416\n",
      "__________________________________________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model = get_model(list(cat_.keys()), emb_dim=8)\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "### SCALE NUMERICA FEATURES ###\n",
    "\n",
    "scaler = StandardScaler()\n",
    "X_train_dense = scaler.fit_transform(X_train[num_.keys()])\n",
    "X_valid_dense = scaler.transform(X_valid[num_.keys()])\n",
    "X_test_dense = scaler.transform(X_test[num_.keys()])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 43789 samples, validate on 14597 samples\n",
      "Epoch 1/30\n",
      "43789/43789 [==============================] - 4s 82us/sample - loss: 0.3687 - auc_1: 0.9102 - val_loss: 0.3673 - val_auc_1: 0.9214\n",
      "Epoch 2/30\n",
      "43789/43789 [==============================] - 2s 37us/sample - loss: 0.3269 - auc_1: 0.9245 - val_loss: 0.3362 - val_auc_1: 0.9265\n",
      "Epoch 3/30\n",
      "43789/43789 [==============================] - 2s 36us/sample - loss: 0.3191 - auc_1: 0.9278 - val_loss: 0.3223 - val_auc_1: 0.9279\n",
      "Epoch 4/30\n",
      "43789/43789 [==============================] - 2s 37us/sample - loss: 0.3142 - auc_1: 0.9303 - val_loss: 0.3199 - val_auc_1: 0.9289\n",
      "Epoch 5/30\n",
      "43789/43789 [==============================] - 2s 35us/sample - loss: 0.3124 - auc_1: 0.9314 - val_loss: 0.3240 - val_auc_1: 0.9257\n",
      "Epoch 6/30\n",
      "43789/43789 [==============================] - 2s 35us/sample - loss: 0.3106 - auc_1: 0.9322 - val_loss: 0.3188 - val_auc_1: 0.9290\n",
      "Epoch 7/30\n",
      "43789/43789 [==============================] - 1s 33us/sample - loss: 0.3079 - auc_1: 0.9337 - val_loss: 0.3210 - val_auc_1: 0.9283\n",
      "Epoch 8/30\n",
      "43789/43789 [==============================] - 2s 35us/sample - loss: 0.3065 - auc_1: 0.9342 - val_loss: 0.3182 - val_auc_1: 0.9284\n",
      "Epoch 9/30\n",
      "43789/43789 [==============================] - 2s 36us/sample - loss: 0.3031 - auc_1: 0.9359 - val_loss: 0.3190 - val_auc_1: 0.9280\n",
      "Epoch 10/30\n",
      "43789/43789 [==============================] - 2s 37us/sample - loss: 0.3029 - auc_1: 0.9357 - val_loss: 0.3180 - val_auc_1: 0.9288\n",
      "Epoch 11/30\n",
      "43789/43789 [==============================] - 2s 37us/sample - loss: 0.3016 - auc_1: 0.9364 - val_loss: 0.3182 - val_auc_1: 0.9285\n",
      "Epoch 12/30\n",
      "43789/43789 [==============================] - 2s 35us/sample - loss: 0.3010 - auc_1: 0.9367 - val_loss: 0.3179 - val_auc_1: 0.9289\n",
      "Epoch 13/30\n",
      "43789/43789 [==============================] - 1s 34us/sample - loss: 0.2997 - auc_1: 0.9374 - val_loss: 0.3189 - val_auc_1: 0.9278\n",
      "Epoch 14/30\n",
      "43789/43789 [==============================] - 2s 35us/sample - loss: 0.2984 - auc_1: 0.9380 - val_loss: 0.3196 - val_auc_1: 0.9282\n",
      "Epoch 15/30\n",
      "43789/43789 [==============================] - 1s 34us/sample - loss: 0.2984 - auc_1: 0.9378 - val_loss: 0.3203 - val_auc_1: 0.9285\n",
      "Epoch 16/30\n",
      "42880/43789 [============================>.] - ETA: 0s - loss: 0.2965 - auc_1: 0.9384Restoring model weights from the end of the best epoch.\n",
      "43789/43789 [==============================] - 1s 34us/sample - loss: 0.2977 - auc_1: 0.9379 - val_loss: 0.3209 - val_auc_1: 0.9279\n",
      "Epoch 00016: early stopping\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<tensorflow.python.keras.callbacks.History at 0x24667fca588>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "es = EarlyStopping(patience=10, verbose=1, min_delta=0.001, monitor='val_loss', mode='auto', restore_best_weights=True)\n",
    "\n",
    "model = get_model(list(cat_.keys()), emb_dim=8)\n",
    "model.fit([X_train_dense]+[X_train[f].values for f in cat_.keys()], y_train, epochs=30, batch_size=128,\n",
    "          verbose=1, callbacks=[es], validation_data=([X_valid_dense]+[X_valid[f].values for f in cat_.keys()], y_valid))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "### PREDICT TEST DATA ###\n",
    "\n",
    "pred_test = model.predict([X_test_dense]+[X_test[f].values for f in cat_.keys()])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8747687881071453"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### ACCURACY DUMMY CLASSIFIER: ALWAYS GOOD DEAL ###\n",
    "\n",
    "y_test[:,0].sum()/len(y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.90      0.99      0.94     12769\n",
      "           1       0.79      0.26      0.39      1828\n",
      "\n",
      "    accuracy                           0.90     14597\n",
      "   macro avg       0.85      0.62      0.67     14597\n",
      "weighted avg       0.89      0.90      0.88     14597\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(np.argmax(y_test, axis=1), np.argmax(pred_test, axis=1)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "### CALCULATE RELIABILITY DIAGRAM ON TEST ###\n",
    "\n",
    "acc_before = {}\n",
    "prob_before = {}\n",
    "\n",
    "for i in range(y_test.shape[1]):\n",
    "    \n",
    "    acc_before[i], prob_before[i] = calibration_curve(y_prob=pred_test[:, i], y_true=y_test[:, i], \n",
    "                                                      n_bins=10, normalize=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'probabilities')"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "### PLOT RELIABILITY DIAGRAM ###\n",
    "\n",
    "plt.figure(figsize=(16,5))\n",
    "\n",
    "plt.subplot(121)\n",
    "plt.plot([0, 1], [0, 1], linestyle='--')\n",
    "plt.plot(acc_before[0], prob_before[0], marker='.', label='before calibration')\n",
    "plt.legend(); plt.title('GoodBuy'); plt.ylabel('fraction of positive'); plt.xlabel('probabilities')\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.plot([0, 1], [0, 1], linestyle='--')\n",
    "plt.plot(acc_before[1], prob_before[1], marker='.', label='before calibration')\n",
    "plt.legend(); plt.title('BadBuy'); plt.ylabel('fraction of positive'); plt.xlabel('probabilities')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "### DEFINE ECE SCORE UTILITY FUNCTION ###\n",
    "\n",
    "def ece_score(probabilities, accuracy, confidence):   \n",
    "    \n",
    "    n_bins = len(accuracy) \n",
    "    n = len(probabilities) \n",
    "    h = np.histogram(a=probabilities, range=(0, 1), bins=n_bins)[0]  \n",
    "    \n",
    "    ece = 0\n",
    "    for m in np.arange(n_bins):\n",
    "        ece = ece + (h[m] / n) * np.abs(accuracy[m] - confidence[m])\n",
    "        \n",
    "    return ece"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.028918922450637662"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### ECE SCORE FOR GOOD BUY ###\n",
    "\n",
    "ece_score(pred_test[:,0], acc_before[0], prob_before[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.028918907093476755"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### ECE SCORE FOR BAD BUY ###\n",
    "\n",
    "ece_score(pred_test[:,1], acc_before[1], prob_before[1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# NEURAL NETWORK CALIBRATION"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "### DEFINE UTILITY FUNCTIONS FOR FITTING TEMPERATURE SCALING AND CALIBRATE PROBABILITIES ###\n",
    "\n",
    "def fit_TemperatureCalibration(train_X_y, valid_X_y=None, epochs=100):\n",
    "    \n",
    "    ### inspired by: https://github.com/stellargraph/stellargraph/blob/develop/stellargraph/calibration.py ###\n",
    "    \n",
    "    T = tf.Variable(tf.ones(shape=(1,)))\n",
    "    history = []\n",
    "    early_stopping = False\n",
    "    optimizer = Adam(learning_rate=0.001)\n",
    "    \n",
    "    def cost(T, x, y):\n",
    "\n",
    "        scaled_logits = tf.multiply(x=x, y=1.0 / T)\n",
    "\n",
    "        cost_value = tf.reduce_mean(\n",
    "            tf.nn.softmax_cross_entropy_with_logits(logits=scaled_logits, labels=y)\n",
    "        )\n",
    "\n",
    "        return cost_value\n",
    "\n",
    "    def grad(T, x, y):\n",
    "\n",
    "        with tf.GradientTape() as tape:\n",
    "            cost_value = cost(T, x, y)\n",
    "\n",
    "        return cost_value, tape.gradient(cost_value, T)\n",
    "    \n",
    "    \n",
    "    X_train, y_train = train_X_y\n",
    "    if valid_X_y:\n",
    "        X_valid, y_valid = valid_X_y\n",
    "        early_stopping = True\n",
    "    \n",
    "    \n",
    "    for epoch in range(epochs):\n",
    "        train_cost, grads = grad(T, X_train, y_train)\n",
    "        optimizer.apply_gradients(zip([grads], [T]))\n",
    "        if early_stopping:\n",
    "            val_cost = cost(T, X_valid, y_valid)\n",
    "            if (len(history) > 0) and (val_cost > history[-1][1]):\n",
    "                break\n",
    "            else: \n",
    "                history.append([train_cost, val_cost, T.numpy()[0]])\n",
    "        else:\n",
    "            history.append([train_cost, T.numpy()[0]])\n",
    "\n",
    "    history = np.asarray(history)\n",
    "    temperature = history[-1, -1]\n",
    "    \n",
    "    return temperature\n",
    "\n",
    "\n",
    "def calibrated_proba(logits, temperature):\n",
    "    \n",
    "    scaled_prediction = logits / temperature\n",
    "\n",
    "    return np.exp(scaled_prediction) / np.sum(np.exp(scaled_prediction), axis=-1, keepdims=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(11677, 31) (2920, 31)\n",
      "(11677, 2) (2920, 2)\n"
     ]
    }
   ],
   "source": [
    "### SPLIT VALIDATION IN TRAIN AND TEST FOR CALIBRATION ###\n",
    "\n",
    "X_train_calib, X_valid_calib, y_train_calib, y_valid_calib = train_test_split(X_valid, y_valid, test_size=0.2, random_state=33)\n",
    "\n",
    "print(X_train_calib.shape, X_valid_calib.shape)\n",
    "print(y_train_calib.shape, y_valid_calib.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "### STANDARDIZE DATA FOR CALIBRATION ###\n",
    "\n",
    "X_train_calib_dense = scaler.transform(X_train_calib[num_.keys()])\n",
    "X_valid_calib_dense = scaler.transform(X_valid_calib[num_.keys()])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "### BUILD LOGITS EXTRACTOR ###\n",
    "\n",
    "model_score = Model(model.input, model.get_layer('logits').output)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(11677, 2) (2920, 2)\n"
     ]
    }
   ],
   "source": [
    "### EXTRACT LOGITS ###\n",
    "\n",
    "X_train_calib = model_score.predict([X_train_calib_dense]+[X_train_calib[f].values for f in cat_.keys()])\n",
    "X_valid_calib = model_score.predict([X_valid_calib_dense]+[X_valid_calib[f].values for f in cat_.keys()])\n",
    "\n",
    "print(X_train_calib.shape, X_valid_calib.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9335861"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### FIT TEMPERATURE SCALING ON VALIDATION ###\n",
    "\n",
    "temperature = fit_TemperatureCalibration((X_train_calib,y_train_calib), (X_valid_calib,y_valid_calib), epochs=100)\n",
    "temperature"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "### PREDICT AND SCALE PROBABILITIES ON TEST ###\n",
    "\n",
    "X_test_logits = model_score.predict([X_test_dense]+[X_test[f].values for f in cat_.keys()])\n",
    "\n",
    "X_test_calib = calibrated_proba(X_test_logits, temperature)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "### CALCULATE RELIABILITY DIAGRAM ON TEST ###\n",
    "\n",
    "acc_after = {}\n",
    "prob_after = {}\n",
    "\n",
    "for i in range(y_test.shape[1]):\n",
    "    \n",
    "    acc_after[i], prob_after[i] = calibration_curve(y_prob=X_test_calib[:, i], y_true=y_test[:, i], \n",
    "                                                    n_bins=10, normalize=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'probabilities')"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7AAAAFNCAYAAAA5LoMsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3hVxdbH8e+kkwABQu+9BUIIofcqigUEVLAAehVBvYpiV4qKoqIi1ouoKCpSVAREEOlVCBCQ3kuoIUAS0pMz7x8n8iIlCSGFJL/P8+Qh55zZs9ck3qy79p49Y6y1iIiIiIiIiNzoXHI7ABEREREREZGMUAErIiIiIiIieYIKWBEREREREckTVMCKiIiIiIhInqACVkRERERERPIEFbAiIiIiIiKSJ6iAFcnHjDEHjTFdcjsOERGRgkq5WCRrqYAVyQXGmHuMMX8ZY2KMMadSvx9qjDHZeM5RxpgkY8z51K8dxpje2XU+ERGRvCq16IxLzZdnjTG/GWMqZUG/ysUi10kFrEgOM8Y8A3wIvAuUBcoAjwKtAY9sPv00a21ha21h4CngO2NMmWw+p4iISF50W2q+LAecBD7Kon6Vi0WugwpYkRxkjPEFXgOGWmtnWmujrdMma+291toEY4yvMeZbY0y4MeaQMeYVY4xL6vEuqa8Ppd65/Ta1z3/6vz/1swhjzMtpxWKtXQBEAzVSjx1ojFl5SbzWGFPTGNPUGHPSGON20We9jTGhWffTERERufFYa+OBmUB9AGNMD2PMJmNMlDHmiDFm1MXtlYtFspcKWJGc1RLwBH5No81HgC9QHWgPPAAMSv1sYOpXx9TPCwMfAxhj6gOfAfcD5QE/oOKVTmCceuC847s9vaCtteuBCKDrRW/fB0xJ71gREZG8zBjjDdwNrE19KwZnbi4G9ACGGGN6prZVLhbJZipgRXJWSeC0tTb5nzeMMauNMedSn7VpjzNJvph6d/Yg8B7ORAhwL/C+tXa/tfY88CJwT+rV2D7AXGvtcmttAvAq4Ljk/HcZY87hTL6zgTettecyGPs3OBMlxpgSwE3AD9f6AxAREckjZqXmzCicReO7ANbapdbav621DmvtFmAqzgvOoFwsku1UwIrkrAig5MXTf6y1ray1xVI/K4vzSuyhi445BFRI/b78FT5zw/kcbXngyEX9xqT2ebHp1tpi1lpvnNOVHjDGDM5g7N8BtxljCgN3ASustcczeKyIiEhe0zM1P3sCjwPLjDFljTHNjTFLUh/1icS5jkXJ1GOUi0WymQpYkZy1BkgA7rjK56eBJKDKRe9VBo6mfn/sCp8l41xc4jhwYYXE1ClPflcLJPXu7u/AbalvxQDeFx1f9pL2R1Pj74XzjrCmLImISL5nrU2x1v4MpABtcN7xnA1Ustb6Ap8D/+wioFwsks1UwIrkoNQpQqOBT40xfYwxhVMXZgoEfHAmx+nAGGNMEWNMFeBpnFdcwTlNaZgxplrq1dc3ca5mmIxzgYlbjTFtjDEeOBeLuur/xo0xFYHuwLbUtzYD/saYQGOMFzDqCod9CzwHNAR+yfxPQkREJG9IfVb1DqA4sAMoApyx1sYbY5oB/S9qrlwsks1UwIrkMGvtOziL0ueAUzjvnv4PeB5YDTyB8wrsfmAlziu9X6Ue/hXOq63LgQNAfGp7rLXbgMdS2x8HzgJhl5z+7n/2ngPWA6twFtRYa3fjTLR/AntSz32pX3DeAf4ldVqUiIhIfjUnNV9GAWOAAam5dijwmjEmGhiB88IzoFwskhOMtTa3YxCRPMQYsw8YbK39M7djERERKYiUi6Ug0x1YEckwY0xvwAKLczsWERGRgki5WAo6t/SbiIiAMWYpzk3c77fWXrolgIiIiGQz5WIRTSEWERERERGRPEJTiEVERERERCRPUAErIiIiIiIieUKeewa2ZMmStmrVqrkdhoiI5BMbNmw4ba0tldtx5GXKzSIikpXSys15roCtWrUqISEhuR2GiIjkE8aYQ7kdQ16n3CwiIlkprdysKcQiIiIiIiKSJ6iAFRERERERkTxBBayIiIiIiIjkCXnuGdgrSUpKIiwsjPj4+NwORbKZl5cXFStWxN3dPbdDERGRNCg3FxzKzSKSk/JFARsWFkaRIkWoWrUqxpjcDkeyibWWiIgIwsLCqFatWm6HIyIiaVBuLhiUm0Ukp+WLKcTx8fH4+fkpQeZzxhj8/Px0NV9EJA9Qbi4YlJtFJKfliwIWUIIsIPR7FhHJO/Q3u2DQ71lEclK2FbDGmK+MMaeMMVuv8rkxxkwwxuw1xmwxxgRlVyzZ7eDBgzRo0OCajtm5cyeBgYE0btyYffv2ZVNkGVO4cGEAjh07Rp8+fQCYPHkyjz/++HX1O378eGJjYy+8vuWWWzh37tx19SkiIpmn3Jw25WYRkRtfdt6BnQx0T+Pzm4FaqV+PAJ9lYyw3nFmzZnHHHXewadMmatSokW57ay0OhyNbYypfvjwzZ87McPv0Yro0Sc6bN49ixYpdV4wiInJdJqPcfFXKzSIiN75sK2CttcuBM2k0uQP41jqtBYoZY8plVzzZLTk5mQEDBhAQEECfPn0uJIcNGzbQvn17mjRpwk033cTx48eZN28e48ePZ9KkSXTs2BGA999/nwYNGtCgQQPGjx8POK8e16tXj6FDhxIUFMSRI0f4448/aNmyJUFBQfTt25fz589fFsvevXvp0qULjRo1IigoiH379nH+/Hk6d+5MUFAQDRs25Ndff73suEuvVh85coTu3btTp04dRo8efdWYhgwZQnBwMP7+/owcORKACRMmcOzYMTp27HhhjFWrVuX06dPpjvfhhx/G39+fbt26ERcXlyW/HxERUW5WblZuFpF8wFqbbV9AVWDrVT6bC7S56PUiIPgqbR8BQoCQypUr20tt3779svfSdfgva5ePc/57nQ4cOGABu3LlSmuttYMGDbLvvvuuTUxMtC1btrSnTp2y1lr7448/2kGDBllrrR05cqR99913rbXWhoSE2AYNGtjz58/b6OhoW79+fbtx40Z74MABa4yxa9assdZaGx4ebtu2bWvPnz9vrbV27NixdvTo0ZfF06xZM/vzzz9ba62Ni4uzMTExNikpyUZGRl7op0aNGtbhcFhrrfXx8bkwDn9/f2uttV9//bUtW7asPX36tI2NjbX+/v52/fr1l8VkrbURERHWWmuTk5Nt+/bt7ebNm6211lapUsWGh4dfaPfP67TG6+rqajdt2mSttbZv3752ypQpl40vU79vEckXVu89bQ9HxGRpn0CIzcZceKN9KTcrNys3i0hWWrkn3B49G5ulfaaVm3NzG50rPfFvr9TQWjsRmAgQHBx8xTYX/P4CnPg77TMnRMHJrWAdYFygTAPwLHr19mUbws1j0+yyUqVKtG7dGoD77ruPCRMm0L17d7Zu3UrXrl0BSElJoVy5yy9kr1y5kl69euHj4wPAnXfeyYoVK7j99tupUqUKLVq0AGDt2rVs3779wnkSExNp2bLlv/qKjo7m6NGj9OrVC3DuzQbO/fheeuklli9fjouLC0ePHuXkyZOULVv2qmPq2rUr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\n",
      "text/plain": [
       "<Figure size 1152x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "### PLOT RELIABILITY DIAGRAM ###\n",
    "\n",
    "plt.figure(figsize=(16,5))\n",
    "\n",
    "plt.subplot(121)\n",
    "plt.plot([0, 1], [0, 1], linestyle='--')\n",
    "plt.plot(acc_before[0], prob_before[0], marker='.', label='before calibration')\n",
    "plt.plot(acc_after[0], prob_after[0], marker='.', label='after calibration')\n",
    "plt.legend(); plt.title('GoodBuy'); plt.ylabel('fraction of positive'); plt.xlabel('probabilities')\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.plot([0, 1], [0, 1], linestyle='--')\n",
    "plt.plot(acc_before[1], prob_before[1], marker='.', label='before calibration')\n",
    "plt.plot(acc_after[1], prob_after[1], marker='.', label='after calibration')\n",
    "plt.legend(); plt.title('BadBuy'); plt.ylabel('fraction of positive'); plt.xlabel('probabilities')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.01921789725821237"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### ECE SCORE FOR GOOD BUY AFTER CALIBRATION ###\n",
    "\n",
    "ece_score(X_test_calib[:,0], acc_after[0], prob_after[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.019217889678130082"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### ECE SCORE FOR BAD BUY AFTER CALIBRATION ###\n",
    "\n",
    "ece_score(X_test_calib[:,1], acc_after[1], prob_after[1])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
